// EventsConfiguration.h

#ifndef EVENTS_CONFIGURATION_H
#define EVENTS_CONFIGURATION_H

#include <string>
#include <vector>
#include "Events.h"
#include "Poco/Util/IniFileConfiguration.h"
#include "Poco/DateTime.h"
#include "Poco/DateTimeParser.h"
#include "Market.h"
#include <iostream>

class CEventsConfiguration : public Poco::Util::IniFileConfiguration
{
public:

        // Constructors :
        /////////////////////////////////////////////////////////////////////////
        // Constructor that receive data stream as std::istream
        CEventsConfiguration(std::istream& istr);

        // Constructor that receive path as std::string
        CEventsConfiguration(const std::string& path);
        /////////////////////////////////////////////////////////////////////////

        std::vector<Events*>& getEvents();

        // Destructor
        virtual ~CEventsConfiguration();

private:
        // Method that actually performs constructors code.
        // Exist to prevent code duplication.
        void Construct();

        std::vector<Events*> events;

        void readNcreateCreate(int currConfFileIndex);
    	void readNcreateConsume(int currConfFileIndex);
    	void readNcreateSell(int currConfFileIndex);
    	void readNcreateBuy(int currConfFileIndex);
    	void readNcreateUserReport(int currConfFileIndex);
    	void readNcreateActivityReport(int currConfFileIndex);
    	void readNcreateProfitReport(int currConfFileIndex);
    	void readNcreateEnergyReport(int currConfFileIndex);
    	void readNcreateAccountReport(int currConfFileIndex);

};

#endif //

